
const initState = {
  cartList: []
}

const cartReducer = (state = initState, action) => {
  const { type, payload } = action

  switch (type) {
    // 加入
    case 'add': {
      const newCarList = [...state.cartList]
      // 查询商品
      const item = newCarList.find(v => v.id === payload.id)
      // 判断是否存在
      if (item)
      // 存在 数量++
      { item.count++ }
      else
      // 不存在  推入新数据
      { newCarList.push(payload) }

      // 返回新数据代替老数据
      return {
        ...state,
        cartList: newCarList
      }

    }
    // 减少
    case 'sub': {
      const newCarList = [...state.cartList]
      // 查询商品
      const item = newCarList.find(v => v.id === payload.id)

      item.count--

      // 返回新数据代替老数据
      return {
        ...state,
        cartList: newCarList
      }

    }

    // 单选
    case 'oneCheck': {
      const newCarList = [...state.cartList]
      // 查询商品
      const item = newCarList.find(v => v.id === payload.id)

      item.state = !item.state

      // 返回新数据代替老数据
      return {
        ...state,
        cartList: newCarList
      }

    }

    case 'allCheck': {
      const newCarList = [...state.cartList]
      // 查询商品
      newCarList.forEach(v => v.state = payload)

      // 返回新数据代替老数据
      return {
        ...state,
        cartList: newCarList
      }
    }
  }


  // 全选
  return state
}

export default cartReducer